package com.tecode.mapper;

import com.tecode.bean.User;
import com.tecode.bean.UserFans;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface UserMapper {

    /**
     * 通过音乐人id获取其作品信息
     */
    List<Map> getWorksByid(Integer id);

    /**
     * 通过音乐人id获取其作品数量
     */
    Integer selectMusicUserWorksNumById(Integer id);

    /**
     * 查询待审核音乐
     */
    List<Map> selectMusicByCId();

    /**
     * 查询待审核用户
     */
    List<Map> selectUserByTypeId();

    /**
     * 查询审核信息
     */
    List<Map> selectExamineInfoById(Integer id);

    /**
     * 查询所有用户
     */
    List<Map> getAllUser();

    /**
     * 获取所有用户创建时间
     */
    List<Map> getUserCreateTime();

    /**
     * 统计小程序访问量
     */
     List<Map> selectAccessStatistics(Map map);

    /**
     * 查询小程序访问
     */
    List<Map> selectAllAccess();

    /**
     * 审核驳回修改（未通过）
     * @return
     */
    Integer updateRejectById(Integer id);
    /**
     * 通过Id 查询user账号
     * @param id
     * @return
     */
    User selectAccountById(Integer id);

    /**
     * 通过id审核user
     * @param id
     * @return
     */
    Integer lookThroughUserById(Integer id);

    /**
     * 审核通过id修改user.codeid(修改用户身份)
     * @param id
     * @return
     */
    Integer updateUserCodeIdById(Integer id);

    /**
     * 通过id 修改user.typeId(删除)
     * @param id
     * @return
     */
    Integer updateUserById(Integer id);
    /**
     * 查询审核状态下用户（待审核、审核未通过、通过）
     * @return
     */
    List<Object> selectUserByType();

    /**
     * 查询审核状态下核人数（待审核、审核未通过、通过）
     * @return
     */
    int selectUserByTypeNum();

    /**
     * 统计音乐人和普通用户人数
     */
    List<Map> selectUserByCodeNum();

    /**
     * 通过id获取用户信息
     * @return
     */
    List<Object> selectUserById(Integer id);

    /**
     * 通过手机获取用户信息
     * @param phone
     * @return
     */
    Map getUserByPhone(String phone);

    int updateByPhone(@Param("ver") String ver,@Param("createtime") Date createtime,@Param("deadline") Date deadline,@Param("phone") String phone);

    List getConcernList(Integer userId);

    Map getUserByOpenid(String openid);

    Integer addUser(User user);

    int updateUser(User user);

    int deleteUserFans(@Param("userId") Integer userId, @Param("fansId") Integer fansId);

    List selectUserListDay();

    Map getUserDetailsByUserId(Integer userId);

    int trafficVolumeListener(@Param("trafficVolume") Integer trafficVolume,@Param("userId") Integer userId);

    List getFansByUserId(Integer userId);

    int addUserFans(UserFans userFans);

    Integer getConcernCount(Integer userId);

    Integer getFansCount(Integer userId);

    List getFansList(Integer userId);
}